let loaderUtils = require('loader-utils');
let babel = require('@babel/core');

function loader(source) {
    // 通过loaderUtils 获取参数配置
    let options = loaderUtils.getOptions(this);
    // 表示此loader是异步事件，它将不再获取return的返回值
    let callback = this.async();
    babel.transform(source, {
        ...options,
        sourceMap: true,
        // 最终打包出结果的名字
        filename: this.resourcePath.split('/').pop()
    }, (err, r) => {
        // 用了异步loader,就必须调用回调此loader才会结束，代码才会继续运行
        // 参数第一个是错误 第二个是转化后的结果 第三个 转化后source-map
        callback(err, r.code, r.map)
    })
    // this.resourcePath是文件的路径
    console.log(this.resourcePath)
}

module.exports = loader